import { getDicts } from '@/api/system/dict/data';
import { useDictStore } from '@/store/modules/dict';

export const DICT_TYPE = {
  SYS_NORMAL_DISABLE: 'sys_normal_disable',
  SYS_USER_SEX: 'sys_user_sex',
  SYS_YES_NO: 'sys_yes_no',
  SYS_NOTICE_TYPE: 'sys_notice_type',
  SYS_NOTICE_STATUS: 'sys_notice_status',
  SYS_OPER_TYPE: 'sys_oper_type',
  SYS_COMMON_STATUS: 'sys_common_status',
  ORDER_REFUND_TYPE: 'order_refund_type',
  ORDER_REFUND_STATUS: 'order_refund_status'
} as const;

/**
 * 获取字典数据
 */
export const useDict = (...args: string[]): { [key: string]: DictDataOption[] } => {
  const res = ref<{
    [key: string]: DictDataOption[];
  }>({});
  return (() => {
    args.forEach(async (dictType) => {
      res.value[dictType] = [];
      const dicts = useDictStore().getDict(dictType);
      if (dicts) {
        res.value[dictType] = dicts;
      } else {
        await getDicts(dictType).then((resp) => {
          res.value[dictType] = resp.data.map(
            (p): DictDataOption => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass })
          );
          useDictStore().setDict(dictType, res.value[dictType]);
        });
      }
    });
    return res.value;
  })();
};
